package com.cn.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

/**
 * 2. Collection的遍历方式
 * 方式一：迭代器
 * 方式二：普通for
 * 方式三：增强for
 */

public class Collection_02_Iteration {
    //方式一：迭代器
    public static void method1(){
        //创建集合的对象
        Collection<String> c = new ArrayList<>();

        //添加元素
        c.add("hello");
        c.add("world");
        c.add("java");
        c.add("javaee");

        //Iterator<E> iterator()：返回此集合中元素的迭代器，通过集合的iterator()方法得到
        Iterator<String> it = c.iterator();
        //用while循环改进元素的判断和获取
        while (it.hasNext()){
            String s = it.next();
            System.out.println(s);
        }
    }

    //迭代器中删除的方法
    //void remove(): 删除迭代器对象当前指向的元素
    public static void method2(){
        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("b");
        list.add("c");
        list.add("d");

        //指向谁,那么此时就删除谁.
        //list.removeIf("b"::equals);
        //System.out.println(list);

        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            String s = it.next();
            if("b".equals(s)){
                //指向谁,那么此时就删除谁.
                it.remove();
            }
        }
        System.out.println(list);
    }

    //方式二：for
    public static void method3(){
        List<String> list = new ArrayList<>();
        list.add("Apple");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

    }

    //方式三 for-each
    public static void method4(){
        ArrayList<String> list =  new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        list.add("f");

        //1,数据类型一定是集合或者数组中元素的类型
        //2,str仅仅是一个变量名而已,在循环的过程中,依次表示集合或者数组中的每一个元素
        //3,list就是要遍历的集合或者数组
        for(String str : list){
            System.out.println(str);
        }

    }


    public static void main(String[] args) {
        //method1();
        //method2();
        //method3();
        method4();
    }
}
